\documentclass[utf8]{ctexart}

\usepackage[a4paper,left=1.25in,right=1.25in,top=1in,bottom=1in]{geometry}
\usepackage{listings}
\usepackage{graphicx}
\usepackage{subfigure}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{float}
\usepackage{indentfirst}
\usepackage{gnuplot-lua-tikz}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{shapes.geometric, arrows}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{newclude}
\usepackage[perpage]{footmisc}

\graphicspath{ {../images/} }
\raggedbottom	% 令页面在垂直方向向顶部对齐
\renewcommand\qedsymbol{QED}
\newcommand{\sign}[1]{\mathrm{sgn}(#1)}
\everymath{\displaystyle}   % 行内公式采用行间公式格式排列

\title{第二次上机作业报告}
\author{姓名：殷文良\qquad 学号：3200101893}
\date{}

\begin{document}
\maketitle
\CTEXsetup[format={\Large\bfseries}]{section}

\section{项目设计思路}
\begin{enumerate}
\item
  本次上机作业主要实现了Newton插值和Hermite插值。根据定义，Newton插值可以看作Hermite插值的特例，因此Newton插值是通过继承Hermite插值的功能实现的。
\item
  设计类InterpConditions专门用于处理表，可以对文件进行读取和输出表数据，为生成差商表提供了技术支持。
\item
  设计类Polynomial用于显式地生成和表示多项式，同时由于多项式的性质容易获得多项式导数的解析表达式。
\end{enumerate}


\section{测试说明}
\begin{itemize}
\item
  在shell终端输入\verb!make report!，可以得到上机报告report.pdf；
\item
  在shell终端输入\verb!make(compile)!，可以编译C++程序main.cpp，输入\verb!./test!可在终端得到输出结果；
\item
  在shell终端输入\verb!bash run!，可以将输出结果重定向到文件result.txt中；
\item
  在shell终端输入\verb!make check!，可以检查程序main.cpp的内存泄漏情况。
\end{itemize}

\section{实验结果}
\begin{enumerate}
\item B\par
  结果如下：
  \begin{align*}
&n =  2 : -0.0384615x^2+1\\
&n =  4 : 0.00530504x^4-0.171088x^2+1\\
  &n =  6 : -0.000840633x^6+0.0335319x^4\\
    &-0.351364x^2+1\\
  &n =  8 : 0.000137445x^8-0.00658016x^6\\
    &+0.0981875x^4-0.528121x^2+1
\end{align*}
  龙格现象如图\ref{fig1}。
  \begin{figure}[H]
  \centering
  \includegraphics[width=0.570\textwidth,height=0.428\textwidth]{2_1.png}
  \caption{Runge phenomenon}
  \label{fig1}
\end{figure}
\item C\par
  结果见文件\verb!result.txt!，切比雪夫插值及误差见图\ref{fig2}。
  \begin{figure}[H]
  \centering
  \includegraphics[width=0.849\textwidth,height=0.457\textwidth]{2_2.png}
  \caption{Chebyshev interpolation}
  \label{fig2}
\end{figure}

\item D\par
  插值结果如下：
  \begin{align*}
  &-0.0000202236x^9+0.00104059x^8\\
  &-0.0218757x^7+0.243041x^6-1.5383x^5\\
  &+5.50812x^4-10.0953x^3+7.16191x^2+75x.
  \end{align*}
  当$t=10s$，位置：$742.503(feet)$，速度：$48.3817(feet/second)$。\par
  时间-速度关系图如图\ref{fig3}所示，可以看到，汽车超过了$55mi/h(81 feet/second)$的限速。
  \begin{figure}[H]
  \centering
  \includegraphics[width=1.000\textwidth]{2_3.eps}
  \caption{Speed-time relation}
  \label{fig3}
\end{figure}

\item E \par
  对于样本1，平均拟合曲线为：
  \begin{align*}
  &0.000041477x^6-0.00371557x^5\\
  &+0.128281x^4-2.11512x^3\\
  &+16.2855x^2-43.0127x+6.67
  \end{align*}
  对于样本2，平均拟合曲线为：
  \begin{align*}
  &0.0000086768ex^6-0.000777473x^5\\
  &+0.0265858x^4-0.424283x^3\\
  &+2.98227x^2-5.85018x+6.67
  \end{align*}
  时间-重量图如图\ref{fig4}所示，可以看到，再过15天后两个样本均不会死。
  \begin{figure}[H]
  \centering
  \includegraphics[width=1.000\textwidth]{2_4.eps}
  \caption{Weight-time relation}
  \label{fig4}
\end{figure}
  
\end{enumerate}

\section{内存泄露检查}
图\ref{fig5}说明程序不存在内存泄露的情况。
\begin{figure}[H]
  \centering
  \includegraphics[width=0.915\textwidth,height=0.314\textwidth]{2_5.png}
  \caption{内存泄漏检查}
  \label{fig5}
\end{figure}

\section{总结}
这次上机实验实现了牛顿插值、埃尔米特插值以及切比雪夫插值，对基本插值方法的性质和实现都有了一定的掌握，但是在完成的过程中遇到了不少困难，尤其是通过C++从底层实现差商表的设计颇具挑战。

\end{document}
